class Solution {
public:
    int totalFruit(vector<int>& f) {
        int sz=f.size();
        int left=0;
        int right=0;
        int count=-INT_MAX;
        unordered_map<int,int> hash;
        if(sz<3)
            return sz;
        while(right<sz)
        {
            hash[f[right]]++;
            while(hash.size()>2)
            {
                hash[f[left]]--;
                if(hash[f[left]]==0)
                    hash.erase(f[left]);

                left++;
            }
            if(hash.size()<=2)
                count=max(count,right-left+1);
            right++;
        }
        return count;
    }
};
